package com.shensi.api.admin.domian.applet.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.shensi.common.core.annotation.Excel;
import com.shensi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 订单支付对象 pay_order
 *
 * @author shensi
 * @date 2021-01-12
 */
@Data
public class PayOrderDto implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    private Long orderId;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 油站id
     */
    private Long stationId;
    /**
     * 油站名称
     */
    private String stationName;


    /**
     * 油企id
     */
    private Long enterpriseId;
    /**
     * 油企名称
     */
    private String enterpriseName;


    /** 状态(0未支付，1，已支付) */
    private String status;

    /**
     * 用户id(消费者)
     */
    private Long consumerId;

    /**
     * 消费者
     */
    private String consumer;

    /**
     * 加油枪号
     */
    private String oilGun;

    /**
     * 油品名称
     */
    private String oilName;

    /**
     * 油品价格
     */
    private BigDecimal oilPirce;

    /**
     * 油品类型（1.柴油 2 汽油）
     */
    private String oilType;

    /**
     * 数量(L/kg)
     */
    private BigDecimal orderLiters;

    /** 应收金额 */
    private BigDecimal receivableAmt;
    /**
     * 实收金额
     */
    private BigDecimal amt;


    /**
     * 到账金额
     */
    private BigDecimal receivedAmt;

    /** 优惠金额 */
    private BigDecimal discountAmt;

    /** 优惠券金额 */
    private BigDecimal discountCouponAmt;

    /**
     * 优惠总计：立减优惠和优惠券优惠之和
     * 优惠金额就是立减金额
     */
    private BigDecimal allPreferential;
    /**
     * 优惠券
     */
    private String discountCoupon;

    /**
     * 微信支付金额
     */
    private BigDecimal wxAmt;

    /**
     * 支付宝支付金额
     */
    private BigDecimal zfbAmt;

    /**
     * pos支付金额
     */
    private BigDecimal posAmt;

    /**
     * 现金支付金额
     */
    private BigDecimal xjAmt;


    /**
     * cdk支付金额
     */
    private BigDecimal cdkAmt;

    /**
     * dkq支付金额
     */
    private BigDecimal dkqAmt;

    /**
     * 滴滴app支付金额
     */
    private BigDecimal didiAppAmt;

    /**
     * 团油app支付金额
     */
    private BigDecimal tyAppAmt;

    /**
     * 其他支付金额
     */
    private BigDecimal otherAmt;

    /**
     * 电子卡金额
     */
    private BigDecimal dzkAmt;
    /**
     * 原实付金额
     */
    private BigDecimal originalAmt;
    /**
     * 提现总金额
     */
    private BigDecimal totalWithdrawalAmount;


    /**
     * 消费积分
     */
    private Long score;

    /**
     * 会员卡号
     */
    // @Excel(name = "会员卡号")
    private String memberNo;

    /**
     * 会员支付金额
     */
    private BigDecimal memberAmt;

    private BigDecimal driverDiscountAmt;

    /**
     * 打印小票数量
     */
    private Long printCount;

    /**
     * wx=微信,zfb=支付宝,dzk=电子卡,xj=现金,cdk=车队卡,pos=pos机
     */
    /** 支付类型：随行付：sxf */
    private String payType;

    @Getter
    @Setter
    private List<String> payTypeList;

    /**
     * 支付方式：02公众号，03小程序
     */
    private String appType;

    /**
     * 加油员
     */
    private String oilPersonnel;
    private String oilPersonnelId;

    /**
     * 支付时间
     */

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    //  @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date payDate;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    //@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createdDate;

    /**
     * 订单类型（1.柴油，2.汽油，积分：3.现金+积分4.现金，5.积分）
     */
    private String orderType;

    /**
     * 订单数
     */
    private int orderCount;

    /**
     * 车牌号
     */
    private String carNo;

    /**
     * 订单来源 1.主动支付2.pos机3.
     */
    private String orderOriginType;
    /**
     * 客户电话
     */
    private String customerPhone;

    /**
     * 客户等级
     */
    private String customerGrade;

    /**
     * pos支付金额
     */
    private BigDecimal qyAmt;

    private BigDecimal cyAmt;

    private BigDecimal sellOilPrice;
    private BigDecimal driverOilPrice;


    /**
     * 结算人优惠金额
     */
    private BigDecimal sellDiscountAmt;
    /**
     * 结算价格
     */
    private BigDecimal sellAmt;

    /**
     * 结算价格
     */
    private BigDecimal ylAmt;
    /**
     * 手机号
     */
    private String mobilePhone;
    /**
     * 模糊查询条件
     *
     * @return
     */
    //客户
    private String likeConsumer;
    //车牌号
    private String likeCarNo;
    //ke
    private String likeCustomerPhone;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date likePayDate;


    private String startTime;

    private String beginTime;


    private String endTime;

    private String isDeleted;

    private List<String> stationIdList;


    private List<LocalDate> createdList;

    private String districtIds;

    /**
     * 地区
     */
    @Getter
    @Setter
    private List<String> districtList;

    //车队卡类型
    private String cdkType;

    private String customerName;

    private String outOrderNo;


    private String platformDiscount;

    private String cardType;

    //充值立减活动优惠金额(元)
    private BigDecimal rechargeDiscountAmt;
    //消费立减活动优惠金额(元)
    private BigDecimal consumeDiscountAmt;

    // 实体卡余额
    private BigDecimal balance;

    private Long growthValue;


    /**
     * 展示信息别名
     *
     * @return
     */
    //微信数量
    private Integer wxNum;
    // 支付宝支付数量
    private Integer zfbNum;
    //现金支付数量
    private Integer xjNum;


    private Integer countNum;


    //退款人员id
    private Long refundUser;
    //退款人员id
    private Long examinUser;

    //审批状态
    private String examinStatus;

    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date refundDate;


    /**
     * 审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date examinDate;

    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String startDate;


    /**
     * 审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String endDate;

    //退款查询状态
    private String refundSelectFalg;


    private String userName;

    //用于班结订单的展示信息
    private BigDecimal refundAmt;


    private String historyFlag;


    /**
     * 退款成功时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    //@Excel(name = "退款成功的时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date refundSuccessDate;

    //根据标志确定当前是否是查询班结内退款的订单信息
    private String refundSuccessStatus;

    //支付方式id
    private Long payWayId;

    //交易单号
    private String transactionId;

    //商户单号
    private String merchantsNumber;

    //费率
    private BigDecimal serviceCharge;

    @ApiModelProperty("渠道手续费支付方0司机/1油企")
    private String channelFeePayer;

    //通联班次标识
    private String tlShiftsMask;

    //通联的班次时间
    private String tlShiftsTime;

    //支付状态
    private String payStatusChinese;

    private String receiveFalge;

    private String czAmt;
    private String wxCzAmt;
    private String impCzAmt;

    //实收金额
    private String ssAmt;

    //标签id
    private Long labelId;

    //标签名称
    private String labelName;

    @ApiModelProperty("发票状态  0未开 1已开 2部分开")
    private Integer invoiceStatus;

    private Integer isPrint;

    /**
     * 订单来源
     * 1-扫码订单
     * 2-繁星订单
     * 9-其它
     */
    @ApiModelProperty("订单来源, 1、扫码订单、2、繁星订单、9、别的订单")
    private String utmSource;

    /**
     * 繁星订单来源
     */

    private String starOrderSource;

    /**
     * 油品汇总：今日订单
     */
    private String nowDayTime;

    //订单渠道费
    private BigDecimal commission;

    // 订单提现金额
    private BigDecimal withdrawalAmount;

    /**
     * 银行卡支付金额
     */
    private BigDecimal yhkAmt;


    /**
     * 创建者
     */
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 备注
     */
    private String remark;


    /**
     * 站点id 查询传参用
     */
    private Long levelId;


    private String createName;

}
